In modern society, the architecture of a computer system rapidly progresses. However, for example, when there is no compatibility between the old and new architectures, the computer system with new architecture cannot use the software resources for the computer system with old architecture just as it is. In such case, the computer system with new architecture can use the software sources for the computer system with old architecture by performing emulation.
For example, because the software resources developed for a mainframe in the past can be used by a current open server by performing emulation, the enormous software resources developed for the mainframe can be effectively utilized. However, when software is executed by emulating the software, the execution speed decreases in comparison with a case in which the software is executed directly. Accordingly, in a case in which the software is executed by emulating the software, a technology to increase the execution speed of the software is awaited.
As a technology related to such technology, in a patent literature 1 (Japanese Patent Application Laid-open Publication No. 2010-140233), there is disclosed an emulation system including a compilation processor and an emulation processor. The compilation processor in this system reads out an instruction from a target code, analyzes it, and generates a host code for emulating the instruction. The emulation processor executes the host code in a compilation mode in which the host code is generated by the compilation processor. The emulation processor reads out the instruction from the next target code, analyzes it, and emulates the instruction in an interpreter mode in which the host code is not generated by the compilation processor.
Further, in a patent literature 2 (Japanese Patent No. 4713820), there is disclosed a program execution control device in which it is determined whether or not a method is not compiled when the method is called in the execution processing of a program. When the method is not compiled, this device executes a byte code of the method in an interpreter processing and also requests the compilation of the method. When the method has been already compiled, this device executes a native code of the method. This device performs the compilation of the method to which the compilation is requested in a task other than the task for executing the instruction such as the execution of the byte code in the interpreter processing or the execution of the native code.